home *** CD-ROM | disk | FTP | other *** search
/ Aminet 50 / Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso / Aminet / dev / basic / BlitzLstMay02.lha / BlitzLstMay02 / attachments / mail_61 / blits.ab2
Text File  |  2002-06-09  |  2KB  |  92 lines

  1. optimize 7;
  2. ;A little demo of moving things using the Blit command...
  3. ; the image.res must inlcude in compileroptions to use this functions
  4. WBStartup
  5. ;create a 'ball' type variable
  6. ;
  7. NEWTYPE.ball
  8. x.q
  9. y
  10. xs
  11. ys
  12. End NEWTYPE
  13.  DEFTYPE.l
  14. ;dimension a 'List' of 'balls'
  15.  
  16.  
  17. Dim List balls.ball(150)
  18. !image_include
  19. Statement image_blitblock{x.l,y.l,x2,y2,w,h}
  20. SHARED imagedat(),imgtags()
  21. USEPATH imagedat(image)
  22. If w=0 Then w=ScreenWidth
  23. If h=0 Then h=ScreenHeight
  24. *scr._Screen = Peek.l(Addr Screen(Used Screen))
  25.      If *scr=0 Then  error{"Tried to blit into a non-exisiting screen !"}:Statement Return
  26. If Peek.l(Addr Window(Used Window))
  27.      BltBitMapRastPort_ *scr\_BitMap,x2,y2,RastPort(Used Window),x,y,w,h,$c0
  28. Else
  29.      error {"Tried to blit into a non-existing window "}
  30. End If
  31. End Statement
  32.  
  33.  
  34. !screen_ {0,"","ram:prefsfile",1}:If scr\id=0 Then End
  35.  
  36. Window 0,0,0,scr\width,scr\height,$800,"",0,1
  37. succ=image_load  {1,"amiga1000.jpg"}
  38. succ=image_load  {0,"ball.iff"}
  39. !screen_ {1,"","ram:prefsfile",0}:If scr\id=0 Then End
  40.  
  41.  ;a second screen for doublebuffer
  42. Window 1,0,0,scr\width,scr\height,$800,"",0,1 ;second window
  43. !screen_ {2,"","ram:prefsfile",0}:If scr\id=0 Then End
  44. ;keep adding items to list until list full
  45. ;
  46. Window 2,0,0,scr\width,scr\height,$800,"",0,1 ;window to store backgroundimage
  47. image_blit{1,0,0}
  48. While AddLast(balls())
  49.   ;Delay_(1)             ;for better rnd values on winuae
  50.   balls()\x=Rnd(scr\width)-10,Rnd(scr\height)-10,(Rnd-.5)*20,(Rnd-.5)*20
  51. Wend
  52.  
  53.  
  54.  
  55. ;while mouse button not hit..
  56. ;
  57. While Joyb(0)=0
  58.   ShowScreen num
  59.   num+1
  60.   If num>1 Then num=0
  61.  Use Window num
  62.   ;start at first item in list
  63.   ;
  64.   ResetList balls()
  65.   ;WCls
  66.   Use Screen 2         ;use the backgroundimage from screen 2
  67.   image_blitblock{0}     ;blit whole backgroundimage
  68.   WLocate 220,290
  69.   If res<5 Then res=5
  70.   WJam 0
  71.   NPrint "fps  ",50/(res LSR 2),"    ",num
  72.   ;wait for vertical blank
  73.   ;
  74.   ;Delay_(1)
  75.  
  76.   ;while more items to come...
  77.   ;
  78.   While NextItem(balls())
  79.     balls()\x+balls()\xs
  80.     balls()\y+balls()\ys
  81.     ;reverse direction if ball gets to edge of bitmap
  82.     ;
  83.     If balls()\x<10 OR balls()\x>scr\width Then balls()\xs=-balls()\xs
  84.     If balls()\y<10 OR balls()\y>scr\height Then balls()\ys=-balls()\ys
  85.     image_blitmask {0,balls()\x,balls()\y,1} ;draw balls
  86.   Wend
  87.   count+1
  88.   If count=4 Then count=0:res=Timer:ResetTimer
  89. Wend
  90. End  ;important allow autofree
  91.  
  92.